/**
 * 
 */
package platzerworld.kegeln.db.spieler;

/**
 * Schnittstelle zur Tabelle Spieler.
 * Die Klasse liefert SQL-Code zur Erzeugung der Tabelle SQL-Code für alle für Kegelverwaltung erforderlichen Statements
 * 
 * @author platzerg
 */
public final class SpielerTbl implements SpielerColumns {
	/**
	 * Name der Datenbanktabelle.
	 */
	public static final String TABLE_NAME = "spieler";

	/**
	 * SQL Anweisung zur Schemadefinition.
	 */
	public static final String SQL_CREATE = "CREATE TABLE SPIELER (_id   INTEGER PRIMARY KEY AUTOINCREMENT, pass_nr INTEGER, name TEXT NOT NULL, vorname TEXT, geb_datum TEXT, loc_latidute INTEGER, loc_longitude INTEGER,  mannschaft_id INTEGER, aushelfer_mannschaft_id INTEGER, FOREIGN KEY(mannschaft_id) REFERENCES MANNSCHAFT(_id));";

	/**
	 * Standard-Sortierreihenfolge für die Tabelle.
	 * Sortiert wird nach Namen absteigend.
	 */
	public static final String DEFAULT_SORT_ORDER = NAME + " DESC";

	/**
	 * SQL Anweisung zur Löschung der Tabelle.
	 */
	public static final String SQL_DROP = "DROP TABLE IF EXISTS " + TABLE_NAME;

	/**
	 * SQL Anweisung für Erzeugung eines Minimal-Spieler aus Name.
	 */
	public static final String STMT_MIN_INSERT = "INSERT INTO SPIELER " + "(name, mannschaft_id) "
			+ "VALUES (?,?)";

	/**
	 * SQL Anweisung für Erzeugung eines Spielers aus den Stammdaten.
	 */
	public static final String STMT_NAME_VEREIN_MANNSCHAFT_INSERT = "INSERT INTO spieler "
			+ "(name, mannschaft_id) " + "VALUES (?,?)";
	
	/**
	 * SQL Anweisung für Erzeugung eines Spielers aus den Stammdaten.
	 */
	public static final String STMT_ALL_INSERT = "INSERT INTO spieler "
			+ "(mannschaft_id, aushelfer_mannschaft_id, pass_nr, name, vorname, geb_datum, loc_latidute, loc_longitude) " + "VALUES (?,?,?,?,?,?,?,?)";

	/**
	 * SQL Anweisung für Erzeugung eines Spielers aus den Stammdaten.
	 */
	public static final String STMT_SPIELER_INSERT_ALL_WITH_ID = "INSERT INTO spieler "
			+ "(_id, mannschaft_id, aushelfer_mannschaft_id, pass_nr, name, vorname, geb_datum, loc_latidute, loc_longitude) " + "VALUES (?,?,?,?,?,?,?,?,?)";

	/**
	 * SQL-Anweisung zur Lüschung aller Spieler.
	 */
	public static final String STMT_SPIELER_DELETE = "DELETE from spieler ";

	/**
	 * SQL-Anweisung zur Löchung eines Spielers anhand seines Schlüsselwerts.
	 */
	public static final String STMT_SPIELER_DELETE_BY_ID = "DELETE spieler " + "WHERE _id = ?";

	/**
	 * SQL-Anweisung zur Löschung eines Spielers anhand seiner mannschaft_id
	 */
	public static final String STMT_SPIELER_DELETE_BY_ID_MANNSCHAFT = "DELETE spieler "
			+ "WHERE _id = ? and mannschaft_id  ?";

	/** Liste aller bekannten Attribute. */
	public static final String[] ALL_COLUMNS = new String[] { ID, PASS_NR, NAME, VORNAME, GEB_DATUM, LOC_LATITUDE, LOC_LONGITUDE, MANNSCHAFT_ID, AUSHELFER_MANNSCHAFT_ID };

	/**
	 * WHERE-Bedingung für ID-Anfrage.
	 */
	public static final String WHERE_ID_EQUALS = ID + "=?";

	/**
	 * WHERE-Bedingung für MANNSCHAFT_ID-Anfrage.
	 */
	public static final String WHERE_ID_MANNSCHAFT_EQUALS = ID + "=? and " +  MANNSCHAFT_ID + "=?";
	
	/**
	 * WHERE-Bedingung für NAME-Anfrage.
	 */
	public static final String WHERE_NAME_EQUALS = NAME + "=?";
	
	/**
	 * WHERE-Bedingung für NAME-Anfrage LIKE.
	 */
	public static final String WHERE_NAME_LIKE = NAME + " LIKE ?";
	
	/**
	 * WHERE-Bedingung für NAME-Anfrage LIKE.
	 */
	public static final String AND_WHERE_NAME_LIKE = " AND " +NAME + " LIKE ?";
	
	/**
	 * WHERE-Bedingung für NAME-Anfrage LIKE.
	 */
	public static final String AND_WHERE_VORNAME_LIKE = " AND " +VORNAME + " LIKE ?";
	
	/**
	 * WHERE-Bedingung für NAME-Anfrage LIKE.
	 */
	public static final String AND_WHERE_PASSNR_EQUALS = " AND " +PASS_NR + " = ?";
	
	/**
	 * WHERE-Bedingung für NAME-Anfrage LIKE.
	 */
	public static final String AND_WHERE_MANNSCHAFT_ID_EQUALS = " AND " +MANNSCHAFT_ID + " = ?";

	/**
	 * WHERE-Bedingung für NAME-Anfrage LIKE.
	 */
	public static final String AND_WHERE_MANNSCHAFT_ID_OR_AUSHELFER_MANNSCHAFT_ID_EQUALS = " AND (" +MANNSCHAFT_ID + " = ? OR " +AUSHELFER_MANNSCHAFT_ID + " = ? )";

	
	/**
	 * Klasse enthält nur Konstanten. Daher keine Objekterzeugung vorgesehen.
	 */
	private SpielerTbl() {
	}
}
